/*
 * @(#)Key.java	1.32 01/12/12
 *
 * 版权所有2002 Sun MicroSystems，Inc.保留所有权利。Sun专有/机密。使用受许可条款的约束。
 */
 
package java.security;

/**
 * 键接口是所有键的顶级接口。它定义了所有键对象共享的功能。所有密钥都有三个特征：
 * 
 * <UL>
 * 
 * <LI>An Algorithm
 * 
 * <p>这是该密钥的密钥算法。密钥算法通常是加密或非对称运算算法(例如DSA或RSA)，
 * 它将与这些算法以及相关算法(例如使用RSA的MD5、使用RSA的SHA-1、原始DSA等)配合使用。
 * 密钥的算法的名称是使用<a href>getULATORM</a>方法获取的。
 * 
 * <LI>An Encoded Form
 * 
 * 这是密钥的外部编码形式，当Java虚拟机外部需要密钥的标准表示形式时，例如将密钥传输给其他方时。
 * 密钥按照标准格式(如X.509或PKCS#8)进行编码，并使用<a href>getEncode</a>方法返回。
 * 
 * <LI>A Format
 * 
 * 这是编码密钥的格式的名称。它由<a href>getFormat</a>方法返回。
 * 
 * </UL>
 * 
 * 密钥通常通过密钥生成器、证书或用于管理密钥的各种身份类获得。此版本中没有关于解析编码密钥和证书的规定。
 *
 * @see PublicKey
 * @see PrivateKey
 * @see KeyPair
 * @see KeyPairGenerator
 * @see Identity
 * @see IdentityScope
 * @see Signer
 *
 * @version 1.28, 97/01/29
 * @author Benjamin Renaud 
 */

public interface Key  extends java.io.Serializable {

    /**
     * 返回此键用于的标准算法名称。例如，“DSA”表示此密钥是DSA密钥。请注意，当此密钥所用于的算法未知时，此方法可能返回null。
     * 
     * 有关标准算法名称的信息，请参阅Java加密体系结构API规范和参考中的附录A。
     * 
     * @return 此键用于的算法的名称，如果此键用于的算法未知，则为NULL。
     */
    public String getAlgorithm();

    /**
     * 返回用于对键进行编码的格式，如果键不支持编码，则返回NULL。
     * 
     * @return the format used to encode the key.
     */
    public String getFormat();

    /**
     * Returns the encoded key.
     * 
     * @return 编码的键，如果键不支持编码，则返回NULL。
     *
     */
    public byte[] getEncoded();
}
